package innerclass05;

/**
 * 匿名对象: new 类名(参数);
 * 匿名内部类
 *  格式:
 *    new 父类 或 父接口(){
 *        //重写父类或父接口方法
 *    };
 *  匿名内部类原理:
 *    1.自动生成一个内部类Demo06$1.class
 *      class Demo06$1 implements Smoke{
 *          public void smoking() {
 *                 System.out.println("饭后一根烟,赛过活神仙!");
 *             }
 *      }
 *   2. 会创建Demo06$1的对象
 *      new Demo06$1();
 *
 *    Smoke s= new Smoke(){ //其实相当于 Smoke s=new Demo06$1();
 *             public void smoking() {
 *                 System.out.println("饭后一根烟,赛过活神仙!");
 *             }
 *         };
 *
 *  匿名内部类为了简化创建实现类
 */
public class Demo06 {
    public static void main(String[] args) {
      /* Smoke s= new Smoke(){ //父接口指向实现类对象 Smoke s=new Demo06$1();
                             //遵循多态
            public void smoking() {
                System.out.println("饭后一根烟,赛过活神仙!");
            }
        };
       s.smoking();*/


       new Smoke(){ //new Demo06$1().smoking();

            @Override
            public void smoking() {
                System.out.println("饭后一根烟,赛过活神仙!");
            }
        }.smoking();
    }
}
